package com.mzy.datepackage.M2022.Aug.thirty_first.service;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;

import com.mzy.datepackage.M2022.Aug.thirty_first.QuoteParams;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.CustomProtocol;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.DbSync;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.FileSync;
import com.mzy.datepackage.M2022.Aug.thirty_first.service.tasks.VideoTask;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.util.ArrayList;
import java.util.List;

/**
 * 任务列表
 * */
@Data
@ApiModel(value = "任务列表配置")
public class Task extends QuoteParams {

    /**
     * 业务名称，nama到contact这4项是业务注册需要填写的项
     * */
    @ApiModelProperty(value = "业务名称")
    @NotEmpty(message = "业务名称不能为空")
    private String name;

    /**
     * 主管部门
     * */
    @ApiModelProperty(value = "主管部门")
    @NotEmpty(message = "主管部门不能为空")
    private String department;

    /**
     * 主管人
     * */
    @ApiModelProperty(value = "主管人")
    @NotEmpty(message = "主管人不能为空")
    private String director;


    /**
     * 联系电话
     * */
    @ApiModelProperty(value = "联系电话")
    @NotEmpty(message = "联系电话不能为空")
    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$||^[0][1-9]{2,3}-[0-9]{5,10}$||^[1-9]{1}[0-9]{5,8}$",message = "联系电话不合法")
    private String contact;

    /**
     * 业务描述
     * */
    @ApiModelProperty(value = "业务描述")
    private String descr;

    /**
     * 文件同步任务列表
     * */
    @ApiModelProperty(value = "文件同步任务列表")
    @JSONField(name = "file_sync")
    @JsonIgnore
    private List<FileSync> fileSyncs = new ArrayList<>();

    /**
     * 数据库同步任务列表
     * */
    @ApiModelProperty(value = "数据库同步任务列表")
    @JSONField(name = "db_sync")
    @JsonIgnore
    private List<DbSync> dbSyncs = new ArrayList<>();

    /**
     * 视频应用列表
     * */
    @ApiModelProperty(value = "视频应用任务列表")
    @JSONField(name = "video")
    @JsonIgnore
    private List<VideoTask> videos = new ArrayList<>();

    /**
     * 定制协议任务列表
     */
    @ApiModelProperty(value = "定制协议任务列表")
    @JSONField(name = "customProtocol")
    @JsonIgnore
    private List<CustomProtocol> customProtocols = new ArrayList<>();

}
